package DataStructure.Stack;

import java.util.LinkedList;
import java.util.Queue;

/**
 * @Author：DijaH
 * @Date：2023/4/15 5:18 下午
 * @Version：1.0.0
 * @Description： 两个队列实现栈
 */
public class DoubleQueueForStack {

    private Queue<Integer> queue;
    private Queue<Integer> tempQueue;//辅助队列

    public DoubleQueueForStack() {
        //初始化
        queue = new LinkedList<>();
        tempQueue = new LinkedList<>();
    }

    public void push(int x) {
        //向辅助队列中添加元素
        tempQueue.offer(x);
        //判断主队列是否为空，并将它们弹出放到temp中
        while(!queue.isEmpty()){
            tempQueue.offer(queue.poll());
        }
        queue = tempQueue;
        tempQueue = new LinkedList<>();
    }

    public int pop() {
        //返回对首元素即可
        return queue.poll();
    }

    public int top() {
        return queue.peek();
    }

    public boolean empty() {
        return queue.isEmpty();
    }
}
